package com.feiwo.nonego.rpc.common.annotation;

import java.lang.annotation.*;

/**
 * @author feiwo 2025-08-03
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RpcReference {

    /**
     * 注册中心类型, 目前的类型包含：zookeeper、nacos、etcd、consul
     */
    String registryType() default "zookeeper";

    /**
     * 注册中心地址
     */
    String registryAddress() default "127.0.0.1:2181";

    /**
     * 负载均衡类型, 目前的类型包含：zkconsistenthash、random
     */
    String loadBalanceType() default "zkconsistenthash";

    /**
     * 序列化类型，目前的类型包含：protostuff、kryo、json、jdk、hessian2、fst
     */
    String serializationType() default "protostuff";

    /**
     * 是否异步调用
     */
    boolean async() default false;

    /**
     * 是否单向调用
     */
    boolean oneWay() default false;

    /**
     * 代理类型, 目前的类型包含：jdk、cglib
     */
    String proxy() default "jdk";

    /**
     * 服务版本号
     */
    String version() default "1.0.0";

    /**
     * 服务调用超时时间，单位毫秒
     */
    long timeout() default 5000;

    /**
     * 服务分组
     */
    String group() default "default";
}
